package top.wangjiu.reactive.rpc.spring.client;


import top.wangjiu.reactive.rpc.generater.HashMethodNameIdGenerater;
import top.wangjiu.reactive.rpc.generater.RequestIdGenerater;
import top.wangjiu.reactive.rpc.loadbalance.LoadBalance;
import top.wangjiu.reactive.rpc.loadbalance.RandomLoadBalance;

import java.lang.annotation.*;

@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
public @interface RpcClient {

    int version() default 0;

    long timeout() default 0;

    String loadBalanceBeanName() default "";

    Class<? extends LoadBalance> loadBalanceType() default RandomLoadBalance.class;

    String requestIdGeneraterBeanName() default "";

    Class<? extends RequestIdGenerater> requestIdGeneraterType() default HashMethodNameIdGenerater.class;

}
